package cn.tedu._03vehicle.base.response;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor

//@Setter：自动生成所有字段的 setter 方法。
//@Getter：自动生成所有字段的 getter 方法。
//@NoArgsConstructor：自动生成无参构造函数。
//@AllArgsConstructor：自动生成包含所有字段的构造函数。


public class JsonResult {  //JsonResult 类一般用于封装 JSON 响应结果。

    //state 用于表示响应状态，message 用于存储响应消息，data 用于存放响应数据。
    private Integer state;
    private String message;
    private Object data;

    //构造函数：接收StatusCode对象，初始化state和message。
    public JsonResult(StatusCode statusCode){
        this.state = statusCode.getState();
        this.message = statusCode.getMessage();
    }
    ////构造函数：接收StatusCode对象和Object类型的数据，初始化state、message和data。
    public JsonResult(StatusCode statusCode, Object data){
        this.state = statusCode.getState();
        this.message = statusCode.getMessage();
        this.data = data;
    }

    //JsonResult类里的静态方法：
    //它接收一个Object类型的参数data，此参数代表响应的数据。
    //借助StatusCode.OPERATION_SUCCESS来设定响应的状态码和消息，
    // 同时把传入的data传递给JsonResult的构造函数。
    public static JsonResult ok(Object data){

        return new JsonResult(StatusCode.OPERATION_SUCCESS,data);
    }

    //该方法没有参数，它调用了ok(null)方法，
    // 也就是创建一个不包含响应数据的JsonResult对象。
    public static JsonResult ok(){
        //return new JsonResult(StatusCode.OPERATION_SUCCESS);
        return ok(null);
    }

}
